package org.hcyspartnoc.luoxin.service.system;

import com.baomidou.mybatisplus.extension.service.IService;
import org.hcyspartnoc.luoxin.common.core.PageBean;
import org.hcyspartnoc.luoxin.common.exception.common.CommonUtilsException;
import org.hcyspartnoc.luoxin.common.exception.framework.AuthException;
import org.hcyspartnoc.luoxin.common.exception.system.SysRoleException;
import org.hcyspartnoc.luoxin.common.exception.system.SysUserException;
import org.hcyspartnoc.luoxin.pojo.dto.system.*;
import org.hcyspartnoc.luoxin.pojo.po.system.SysUserPo;
import org.hcyspartnoc.luoxin.pojo.vo.system.SysUserVo;
import org.springframework.web.multipart.MultipartFile;

public interface ISysUserService extends IService<SysUserPo> {
    String registerByWx(SysUserWxRegisterDto sysUserWxRegisterDto) throws SysUserException;

    String loginByPhone(SysUserLoginByPhoneDto sysUserLoginByPhoneDto) throws SysUserException, CommonUtilsException;

    void logout() throws SysUserException;

    String modifyAvatar(MultipartFile image) throws CommonUtilsException, SysUserException;

    void modifyPassword(SysUserModifyPwdDto sysUserModifyPwdDto) throws SysUserException;

    void modifyBaseInfo(SysUserModifyBaseInfoDto sysUserModifyBaseInfoDto);

    SysUserVo queryByToken();

    void rebindingRole(SysUserRebindingRoleDto sysUserRebindingRoleDto) throws SysUserException, SysRoleException;

    void modifyStatus(SysUserModifyStatusDto sysUserModifyStatusDto) throws AuthException, SysUserException, SysRoleException;

    PageBean<SysUserPo, SysUserVo> queryPage(Integer currentPage, Integer pageSize, String nickName, String phone, Integer status, Integer roleId);
}
